import { NgModule } from '@angular/core'

import { SharedModule } from '@shared'
import { AcquirerListComponent } from './list/list.component'
import { AcquirerRoutingModule } from './acquirer-routing.module'
import { AcquirerNewComponent } from './new/new.component'
import { AcquirerNewBaseComponent } from './new/base/base.component'
import { AcquirerNewTradeComponent } from './new/trade/trade.component'
import { AcquirerNewUserComponent } from './new/user/user.component'
import { AcquirerNewQrcodeChannelComponent } from './new/qrcode-channel/qrcode-channel.component'
import { AcquirerNewCardChannelComponent } from './new/card-channel/card-channel.component'
import { AcquirerNewCardFuncComponent } from './new/card-func/card-func.component'
import { AcquirerNewQrcodeFuncComponent } from './new/qrcode-func/qrcode-func.component'
import { AcquirerService } from './acquirer.service'
import { AcquirerAlinterService } from './acquirer-alinter.service'
import { AcquirerDetailComponent } from './detail/detail.component'
import { AcquirerDetailTabTradesComponent } from './detail/tab-trades/tab-trades.component'
import { AcquirerStoreService } from './new/acquirer-store.service'
import { AcquirerNewSettlementComponent } from './new/settlement/settlement.component'
import { AcquirerDetailTabAuditComponent } from './detail/tab-audit/tab-audit.component'
import { AcquirerDetailTabChannelCardComponent } from './detail/tab-channel-card/tab-channel-card.component'
import { AcquirerDetailTabChannelQrComponent } from './detail/tab-channel-qr/tab-channel-qr.component'
import { AcquirerDetailTabFuncCardComponent } from './detail/tab-func-card/tab-func-card.component'
import { AcquirerDetailTabFuncQrComponent } from './detail/tab-func-qr/tab-func-qr.component'
import { AcquirerDetailTabSettlementComponent } from './detail/tab-settlement/tab-settlement.component'
import { AcquirerDetailTabUsersComponent } from './detail/tab-users/tab-users.component'
import { AcquirerNewAuditComponent } from './new/audit/audit.component'
import { AcquirerAddQrChannelComponent } from './add/qr-channel/qr-channel.component'
import { AcquirerAddTradeComponent } from './add/trade/trade.component'
import { AcquirerAddCardChannelComponent } from './add/card-channel/card-channel.component'
import { CardChannelService } from './new/card-channel/card-channel.service'
import { UPIService } from './new/qrcode-channel/config-UPI.service'
import { WXPService } from './new/qrcode-channel/config-WXP.service'
import { ALPService } from './new/qrcode-channel/config-ALP.service'
import { AcquirerDetailTabFuncAcquirerComponent } from './detail/tab-func-acquirer/tab-func-acquirer.component'
import { AcquirerNewAcquirerFuncComponent } from './new/acquirer-func/acquirer-func.component'
import { AcquirerNewEcChannelComponent } from './new/ec-channel/ec-channel.component'
import { AcquirerAddEcChannelComponent } from './add/ec-channel/ec-channel.component'
import { AcquirerDetailTabChannelEcComponent } from './detail/tab-channel-ec/tab-channel-ec.component'
import { EcChannelService } from './new/ec-channel/ec-channel.service'
import { TRUService } from './new/qrcode-channel/config-TRU.service'

const COMPONENTS = [AcquirerListComponent, AcquirerDetailComponent]

const COMPONENTS_NOROUNT = [
  AcquirerNewAuditComponent,
  AcquirerNewComponent,
  AcquirerNewBaseComponent,
  AcquirerNewTradeComponent,
  AcquirerNewUserComponent,
  AcquirerNewSettlementComponent,
  AcquirerNewQrcodeChannelComponent,
  AcquirerNewCardChannelComponent,
  AcquirerNewCardFuncComponent,
  AcquirerNewQrcodeFuncComponent,
  AcquirerNewAcquirerFuncComponent,
  AcquirerDetailTabTradesComponent,
  AcquirerDetailTabAuditComponent,
  AcquirerDetailTabChannelCardComponent,
  AcquirerDetailTabChannelQrComponent,
  AcquirerDetailTabFuncCardComponent,
  AcquirerDetailTabFuncQrComponent,
  AcquirerDetailTabSettlementComponent,
  AcquirerDetailTabFuncAcquirerComponent,
  AcquirerDetailTabUsersComponent,
  AcquirerAddQrChannelComponent,
  AcquirerAddTradeComponent,
  AcquirerAddCardChannelComponent,
  AcquirerNewEcChannelComponent,
  AcquirerAddEcChannelComponent,
  AcquirerDetailTabChannelEcComponent,
]

@NgModule({
  imports: [SharedModule, AcquirerRoutingModule],
  declarations: [...COMPONENTS, ...COMPONENTS_NOROUNT],
  entryComponents: COMPONENTS_NOROUNT,
  providers: [
    { provide: AcquirerService, useClass: AcquirerAlinterService },
    AcquirerStoreService,
    CardChannelService,
    EcChannelService,
    UPIService,
    WXPService,
    ALPService,
    TRUService
  ],
})
export class AcquirerModule {}
